﻿package com.jing.system.model;

import java.util.HashMap;
import java.util.Map;

/**
 * 分页操作类
 * @author jing.yue
 * @version 1.0
 * @since 2012-08-30
 */
public class PageCls {
	public static final String DATAS = "DATA";
	public static final String SIZE = "SIZE";
	public static final String PAGE = "PAGE";
	public static final String COUNTPAGE = "countPAGE";
	public static final String COUNTSIZE = "countSIZE";
	public static final String PAGECOUNTSIZE = "pageCountSIZE";
	public static final String TAGPAGESIZE = "tagPageSIZE";
	/** 默认的记录大小 */
	public static final int DEFAULT_SIZE = 10;
	/** 默认的数字分页的间距 */
	public static final int DEFAULT_TAG_PAGE_SIZE = 3;
	//每页大小
	private Integer size;
	//当前第几页
	private Integer page;
	//总共多少页
	private Integer countPage;
	//总共多少条数据
	private Integer countSize;
	//当前页的记录数
	private Integer pageCountSize;
	//保存查询数据的集合
	private Object datas;
	//页码的大小[默认为3]
	private Integer tagPageSize;
	//保存信息的Map集合
	private Map<String, Object> map = new HashMap<String, Object>();

	public PageCls(){
		super();
	}

	/**
	 * 设置PageCls对象
	 * @param page
	 * @param size
	 * @param begin
	 * @param end
	 * @param countSize
	 * @param pageCountSize
	 * @param data
	 * @return
	 */
	public static PageCls setPageCls(Integer page, Integer size, Integer begin, Integer end, Integer countSize, Integer pageCountSize, Object data) {
		PageCls pageCls = new PageCls();
		//设置总的记录条数
		pageCls.setCountSize(countSize);
		//设置分页查出的集合
		pageCls.setDatas(data);
		//设置当前页的记录数
		pageCls.setPageCountSize(pageCountSize);
		//设置当前页数
		pageCls.setPage(page);
		//设置每页显示的条数
		pageCls.setSize(size);
		//设置总共多少页
		pageCls.setCountPage((pageCls.getCountSize() + size - 1) / size);
		return pageCls;
	}

	/**
	 * 分页查出的信息 为 MAP集合
	 * 		有默认的 keyName
	 * @return
	 */
	public Map<String, Object> getPageInfo(){
		map.put(DATAS, this.datas);
		map.put(SIZE, this.size);
		map.put(PAGE, this.page);
		//总共多少页
		map.put(COUNTPAGE, this.countPage);
		//总共多少条数据
		map.put(COUNTSIZE, this.countSize);
		//当前页的记录数
		map.put(PAGECOUNTSIZE, this.pageCountSize);
		//页码的大小[默认为5]
		map.put(TAGPAGESIZE, this.tagPageSize);
		return map;
	}

	/**
	 * 分页查出的信息 为 MAP集合
	 * @param dataName          :集合的keyName
	 * @param sizeName			:每页大小的keyName
	 * @param pageName			:当前第几页keyName
	 * @param beginName			:数字分页 开始数keyName
	 * @param endName			:数字分页 结束数keyName
	 * @param countPageName		:总共多少页keyName
	 * @param countSizeName		:总共多少条数据keyName
	 * @param pageCountSizeName	:当前页的记录数keyName
	 * @param tagPageSizeName	:页码的大小[默认为5]
	 * @return
	 */
	public Map<String, Object> getPageInfo(String dataName, String sizeName, String pageName, String beginName, String endName, String countPageName,
			String countSizeName, String pageCountSizeName, String tagPageSizeName){
		map.put(dataName, this.datas);
		map.put(sizeName, this.size);
		map.put(pageName, this.page);
		map.put(countPageName, this.countPage);
		map.put(countSizeName, this.countSize);
		map.put(pageCountSizeName, this.pageCountSize);
		map.put(pageCountSizeName, this.pageCountSize);
		map.put(tagPageSizeName, this.tagPageSize);
		return map;
	}

	/**
	 * 每页大小
	 * @return
	 */
	public Integer getSize() {
		return size;
	}

	/**
	 * 设置每页大小
	 * @param size
	 */
	public void setSize(Integer size) {
		if(size == null || size == 0)
			this.size = DEFAULT_SIZE;
		else
			this.size = size;
	}

	/**
	 * 当前第几页
	 * @return
	 */
	public Integer getPage() {
		return page;
	}

	/**
	 * 设置当前第几页
	 * @param page
	 */
	public void setPage(Integer page) {
		this.page = page;
	}

	/**
	 * 总共多少页
	 * @return
	 */
	public Integer getCountPage() {
		return countPage;
	}

	/**
	 * 设置总共多少页
	 * @param countPage
	 */
	public void setCountPage(Integer countPage) {
		this.countPage = countPage;
	}

	/**
	 * 总共多少条数据
	 * @return
	 */
	public Integer getCountSize() {
		return countSize;
	}

	/**
	 * 设置总共多少条数据
	 * @param countSize
	 */
	public void setCountSize(Integer countSize) {
		this.countSize = countSize;
	}

	/**
	 * 当前页的记录数
	 */
	public Integer getPageCountSize() {
		return pageCountSize;
	}

	/**
	 * 设置当前页的记录数
	 * @param pageCountSize
	 */
	public void setPageCountSize(Integer pageCountSize) {
		this.pageCountSize = pageCountSize;
	}

	/**
	 * 保存查询数据的集合
	 * @return
	 */
	public Object getDatas() {
		return datas;
	}

	/**
	 * 设置保存查询数据的集合
	 * @param pageCountSize
	 */
	public void setDatas(Object datas) {
		this.datas = datas;
	}

	/**
	 * 页码的大小[默认为5]
	 * @return
	 */
	public Integer getTagPageSize() {
		return tagPageSize;
	}

	/**
	 * 页码的大小[默认为5]
	 * @param tagPageSize
	 */
	public void setTagPageSize(Integer tagPageSize) {
		if(tagPageSize == null || tagPageSize == 0)
			this.tagPageSize = DEFAULT_TAG_PAGE_SIZE;
		else
			this.tagPageSize = tagPageSize;
	}
}